home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / Hello / Sources / Commands.cpp < prev    next >
Encoding:
Text File  |  1996-09-17  |  8.9 KB  |  289 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                Commands.cpp
  4. //    Release Version:    $ ODF 1 $
  5. //
  6. //    Copyright:            (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #include "Hello.hpp"
  11.  
  12. #ifndef COMMANDS_H
  13. #include "Commands.h"
  14. #endif
  15.  
  16. #ifndef PART_H
  17. #include "Part.h"
  18. #endif
  19.  
  20. #ifndef CONTENT_H
  21. #include "Content.h"
  22. #endif
  23.  
  24. // ----- Framework Includes -----
  25.  
  26. #ifndef FWPRESEN_H
  27. #include "FWPresen.h"
  28. #endif
  29.  
  30. // ----- OpenDoc Includes -----
  31.  
  32. #ifndef SOM_Module_OpenDoc_Commands_defined
  33. #include <CmdDefs.xh>
  34. #endif
  35.  
  36. //========================================================================================
  37. // RunTime Info
  38. //========================================================================================
  39.  
  40. #ifdef FW_BUILD_MAC
  41. #pragma segment odfhello
  42. #endif
  43.  
  44. FW_DEFINE_AUTO(CHelloEditCommand)
  45. FW_DEFINE_AUTO(CHelloDropCommand)
  46. FW_DEFINE_AUTO(CHelloDragCommand)
  47.     
  48. //========================================================================================
  49. // CHelloEditCommand
  50. //========================================================================================
  51.  
  52. //----------------------------------------------------------------------------------------
  53. //    CHelloEditCommand constructor
  54. //----------------------------------------------------------------------------------------
  55.  
  56. CHelloEditCommand::CHelloEditCommand(Environment* ev,
  57.                                      ODCommandID id,
  58.                                      CHelloContent* itsContent,
  59.                                      FW_CFrame* frame) :
  60.     FW_CClipboardCommand(ev, id, frame, FW_kCanUndo),
  61.     fHelloContent(itsContent)
  62. {
  63.     switch (id)
  64.     {
  65.         case kODCommandCut:
  66.             SetMenuStringsFromResource(ev, kHelloUndoStrings, kUndoCutTextMsg, kRedoCutTextMsg);
  67.             break;
  68.         case kODCommandClear:
  69.             SetMenuStringsFromResource(ev, kHelloUndoStrings, kUndoClearTextMsg, kRedoClearTextMsg);
  70.             break;
  71.         case kODCommandPaste:
  72.             SetMenuStringsFromResource(ev, kHelloUndoStrings, kUndoPasteTextMsg, kRedoPasteTextMsg);
  73.             break;
  74.     }
  75.     FW_END_CONSTRUCTOR
  76. }
  77.  
  78. //----------------------------------------------------------------------------------------
  79. //    CHelloEditCommand destructor
  80. //----------------------------------------------------------------------------------------
  81.  
  82. CHelloEditCommand::~CHelloEditCommand()
  83. {
  84. }
  85.  
  86. //----------------------------------------------------------------------------------------
  87. //    CHelloEditCommand::SaveUndoState
  88. //----------------------------------------------------------------------------------------
  89.  
  90. void CHelloEditCommand::SaveUndoState(Environment *ev)
  91. {
  92. FW_UNUSED(ev);
  93.      fSavedTextData = fHelloContent->GetTextData();
  94. }
  95.  
  96. //----------------------------------------------------------------------------------------
  97. //    CHelloEditCommand::UndoIt
  98. //----------------------------------------------------------------------------------------
  99.  
  100. void CHelloEditCommand::UndoIt(Environment* ev)
  101. {
  102.     FW_CClipboardCommand::UndoIt(ev);    // call inherited
  103.  
  104.     switch (GetCommandID(ev))
  105.     {
  106.         case kODCommandCut:
  107.         case kODCommandClear:
  108.             this->RestoreSelection(ev);
  109.             break;
  110.  
  111.         case kODCommandPaste:
  112.             this->SwapSelection(ev);
  113.             break;
  114.     }    
  115. }
  116.  
  117. //----------------------------------------------------------------------------------------
  118. //    CHelloEditCommand::RedoIt
  119. //----------------------------------------------------------------------------------------
  120.  
  121. void CHelloEditCommand::RedoIt(Environment *ev)
  122. {
  123.     FW_CClipboardCommand::RedoIt(ev);    // call inherited
  124.  
  125.     switch (GetCommandID(ev))
  126.     {
  127.         case kODCommandCut:
  128.         case kODCommandClear:
  129.             this->RemoveSelection(ev);
  130.             break;
  131.  
  132.         case kODCommandPaste:
  133.             this->SwapSelection(ev);
  134.             break;
  135.     }    
  136. }
  137.  
  138. //----------------------------------------------------------------------------------------
  139. //    CHelloEditCommand::RemoveSelection
  140. //----------------------------------------------------------------------------------------
  141.  
  142. void CHelloEditCommand::RemoveSelection(Environment* ev)
  143. {
  144.     fHelloContent->ClearTextData(ev);
  145. }
  146.  
  147. //----------------------------------------------------------------------------------------
  148. //    CHelloEditCommand::RestoreSelection
  149. //----------------------------------------------------------------------------------------
  150.  
  151. void CHelloEditCommand::RestoreSelection(Environment* ev)
  152. {
  153.     fHelloContent->SetTextData(ev, fSavedTextData);
  154. }
  155.  
  156. //----------------------------------------------------------------------------------------
  157. //    CHelloEditCommand::SwapSelection
  158. //----------------------------------------------------------------------------------------
  159.  
  160. void CHelloEditCommand::SwapSelection(Environment* ev)
  161. {
  162.     FW_CString255 textData = fHelloContent->GetTextData();
  163.     fHelloContent->SetTextData(ev, fSavedTextData);
  164.     fSavedTextData = textData;
  165. }
  166.  
  167. //========================================================================================
  168. // CHelloDragCommand
  169. //========================================================================================
  170.  
  171. //----------------------------------------------------------------------------------------
  172. //    CHelloDragCommand constructor
  173. //----------------------------------------------------------------------------------------
  174.  
  175. CHelloDragCommand::CHelloDragCommand(Environment* ev,
  176.                                      CHelloContent* content,
  177.                                      FW_CFrame* frame) :
  178.     FW_CDragCommand(ev, frame, FW_kCanUndo),
  179.     fHelloContent(content)
  180. {
  181.     SetMenuStringsFromResource(ev, kHelloUndoStrings, kUndoDragTextMsg, kRedoDragTextMsg);
  182.     FW_END_CONSTRUCTOR
  183. }
  184.  
  185. //----------------------------------------------------------------------------------------
  186. //    CHelloDragCommand destructor
  187. //----------------------------------------------------------------------------------------
  188.  
  189. CHelloDragCommand::~CHelloDragCommand()
  190. {
  191. }
  192.  
  193. //----------------------------------------------------------------------------------------
  194. //    CHelloDragCommand::SaveUndoState
  195. //----------------------------------------------------------------------------------------
  196.  
  197. void CHelloDragCommand::SaveUndoState(Environment *ev)    // Override
  198. {
  199. FW_UNUSED(ev);
  200.      fSavedTextData = fHelloContent->GetTextData();
  201. }
  202.  
  203. //----------------------------------------------------------------------------------------
  204. //    CHelloDragCommand::UndoIt
  205. //----------------------------------------------------------------------------------------
  206.  
  207. void CHelloDragCommand::UndoIt(Environment* ev)
  208. {
  209.     fHelloContent->SetTextData(ev, fSavedTextData);
  210. }
  211.  
  212. //----------------------------------------------------------------------------------------
  213. //    CHelloDragCommand::RedoIt
  214. //----------------------------------------------------------------------------------------
  215.  
  216. void CHelloDragCommand::RedoIt(Environment* ev)
  217. {
  218.     fHelloContent->ClearTextData(ev);
  219. }
  220.  
  221. //========================================================================================
  222. // CHelloDropCommand
  223. //========================================================================================
  224.  
  225. //----------------------------------------------------------------------------------------
  226. //    CHelloDropCommand constructor
  227. //----------------------------------------------------------------------------------------
  228.  
  229. CHelloDropCommand::CHelloDropCommand(Environment *ev,
  230.                                      CHelloContent* content,
  231.                                      FW_CFrame* frame,
  232.                                      ODDragItemIterator* dropInfo, 
  233.                                      ODFacet* odFacet,
  234.                                      const FW_CPoint& dropPoint) : 
  235.     FW_CDropCommand(ev, frame, dropInfo, odFacet, dropPoint, FW_kCanUndo),
  236.     fHelloContent(content)
  237. {
  238.     SetMenuStringsFromResource(ev, kHelloUndoStrings, kUndoDropTextMsg, kRedoDropTextMsg);
  239.     FW_END_CONSTRUCTOR
  240. }
  241.  
  242. //----------------------------------------------------------------------------------------
  243. //    CHelloDropCommand destructor
  244. //----------------------------------------------------------------------------------------
  245.  
  246. CHelloDropCommand::~CHelloDropCommand()
  247. {
  248. }
  249.  
  250. //----------------------------------------------------------------------------------------
  251. //    CHelloDropCommand::SaveUndoState
  252. //----------------------------------------------------------------------------------------
  253.  
  254. void CHelloDropCommand::SaveUndoState(Environment *ev)
  255. {
  256. FW_UNUSED(ev);
  257.      fSavedTextData = fHelloContent->GetTextData();
  258. }
  259.  
  260. //----------------------------------------------------------------------------------------
  261. //    CHelloDropCommand::UndoIt
  262. //----------------------------------------------------------------------------------------
  263.  
  264. void CHelloDropCommand::UndoIt(Environment* ev)
  265. {
  266.     this->SwapSelection(ev);
  267. }
  268.  
  269. //----------------------------------------------------------------------------------------
  270. //    CHelloDropCommand::RedoIt
  271. //----------------------------------------------------------------------------------------
  272.  
  273. void CHelloDropCommand::RedoIt(Environment* ev)
  274. {
  275.     this->SwapSelection(ev);
  276. }
  277.  
  278. //----------------------------------------------------------------------------------------
  279. //    CHelloDropCommand::SwapSelection
  280. //----------------------------------------------------------------------------------------
  281.  
  282. void CHelloDropCommand::SwapSelection(Environment* ev)
  283. {
  284.     FW_CString255 textData = fHelloContent->GetTextData();
  285.     fHelloContent->SetTextData(ev, fSavedTextData);
  286.     fSavedTextData = textData;
  287. }
  288.  
  289.